/*
 * @Author: yuqy
 * @Date: 2023-04-11 20:05:43
 * @LastEditors: yuqy
 * @LastEditTime: 2023-10-23 18:39:16
 * @Descripttion: -
 */
import axios from 'axios'
// import { showToast } from 'vant'
import { Message } from "view-ui-plus";
import store from "@/store";
import util from '@/libs/util'
const service = axios.create({
    baseURL: '/',
    timeout: 5000,
    withCredentials: false, 
    headers: {'X-Custom-Header': 'viteApi'}
})
service.defaults.headers.common['Authorization'] = "AUTH_TOKEN";
service.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';
service.defaults.headers.get['Content-Type'] = 'application/x-www-form-urlencoded'

// 添加请求拦截器
service.interceptors.request.use(config => {
    const token = util.getToken()
    if (token) {
        config.headers['token'] = token
    }
    // 在发送请求之前做些什么
    // console.log('请求前拦截器1:', config)
    // if (config.loading) {

    // }
    // 默认是加载进度框的
    let isNoLoading = false
    if ((config.params&&config.params.isNoLoading) || (config.data&&config.data.isNoLoading)) isNoLoading = true
    if (!isNoLoading) {
        store.commit('updateLoading', true)
    }
    return config;
}, (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
});

//添加响应拦截器
service.interceptors.response.use((response) => {
    // 对响应数据做点什么
    const res = response.data;
    store.commit('updateLoading', false);
    if (res && (res.appid || res.code || res.classroomIn || res.message || res == 'OK<success>' || res.liveRtmp)) {
        return res
    }
    if (res.reCode !== 0) {
        // token 过期
        if (res.reCode === 401)
            // 警告提示窗
            return;
        if (res.reCode == 403) {
            return;
        }
        // showToast({
        //     message: res.reMsg || '请求异常',
        //     position: 'bottom',
        // })
        Message.error(res.reMsg || '请求异常')
        // 若后台返回错误值，此处返回对应错误对象，下面 error 就会接收
        return res
    }
    return response.data.data;
}, error => {
    store.commit('updateLoading', false)
    // 对响应错误做点什么
    if (error && error.response) {
        switch (error.response.status) {
            case 400:
                error.message = "请求错误(400)"
                break
            case 401:
                error.message = "未授权,请登录(401)"
                break
            case 403:
                error.message = "拒绝访问(403)"
                break
            case 404:
                error.message = `请求地址出错: ${error.response.config.url}`
                break
            case 405:
                error.message = "请求方法未允许(405)"
                break
            case 408:
                error.message = "请求超时(408)"
                break
            case 500:
                error.message = "服务器内部错误(500)"
                break
            case 501:
                error.message = "服务未实现(501)"
                break
            case 502:
                error.message = "网络错误(502)"
                break
            case 503:
                error.message = "服务不可用(503)"
                break
            case 504:
                error.message = "网络超时(504)"
                break
            case 505:
                error.message = "HTTP版本不受支持(505)"
                break
            default:
                error.message = `连接错误: ${error.message}`
        }
    } else {
        if (error.message == "Network Error") error.message == "网络异常，请检查后重试！"
        error.message = "连接到服务器失败，请联系管理员"
    }
    // showToast({
    //     message: error.message || '请求异常',
    //     position: 'bottom',
    // })
    Message.error(error.message || '请求异常')
    let errorRep = {
        statusText: error.response.statusText || null,
        success: false
    }
    return errorRep;
});
export default service